﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Biuro.Klasy;
using Biuro.Formy;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
using System.Collections;

namespace Biuro
{
    public partial class GlowneOkno : Form
    {
        userData _uzytkownik;
        public databaseConnection _polaczenie;
        public int tmp;
        XmlSerializer _xmlSerializer;
        LoginForm oknoLogowania = null;
        SearchTripForm wyszukiwarkaWycieczek = null;
        SearchClientForm wyszukiwarkaKlientow = null;
        klient AktualnyKlient;
        AddEditUserForm edytorKlientow;
        AddEditOrder edytorZamowien;
        wycieczka aktualnaWycieczka;
        AddEditTrip edytorWycieczek;
        AddEditHotel edytorHotelu;
        AddEditKraj edytorKraju;
        AddEditTransport edytorTransportu;
        AddEditPromotion edytorPromocji;
        AddEditKurort edytorKurortu;
        AddEditService edytorUslug;
        AddEditType edytorTypu;
        AddEditReservation edytorRezerwacji;
        Wykresy edytorStatystyk;
        int konsultantID;
        public GlowneOkno()
        {
            InitializeComponent();
        }

        private void GlowneOkno_Load(object sender, EventArgs e)
        {
            _xmlSerializer = new XmlSerializer(typeof(userData));
            StreamReader sr = new StreamReader("dane\\UserData.xml");
            XmlTextReader r = new XmlTextReader(sr);
            Object obj = _xmlSerializer.Deserialize(r);
            sr.Close();
            _uzytkownik = (userData)obj;
            _polaczenie = new databaseConnection(_uzytkownik);
            _polaczenie.Conn.StateChange += new StateChangeEventHandler(Conn_StateChange);
            _polaczenie.Polacz();
            tpPomocnik.SetToolTip(btSzukajKlienta, "Uruchamia moduł zarządzania klientami");
            tpPomocnik.SetToolTip(btSzukajWycieczki, "Uruchamia moduł zarządzania wycieczkami");
            tpPomocnik.SetToolTip(lbCancelClient, "Usuń aktywnego klienta");
            tpPomocnik.SetToolTip(lbChangeClient, "Zmień aktywnego klienta");
            tpPomocnik.SetToolTip(lbNazwaWycieczki, "Aktywna wycieczka");
            tpPomocnik.SetToolTip(lbTripChange, "Zmień aktywną wycieczkę");
            tpPomocnik.SetToolTip(lbCancelWycieczka, "Usuń akywną wycieczkę");
            konsultantID = _polaczenie.PobierzIdKonsultanta(_uzytkownik.UserID);
        }

        private void GlowneOkno_FormClosed(object sender, FormClosedEventArgs e)
        {
            TextWriter w = new StreamWriter("dane\\UserData.xml");
            _xmlSerializer.Serialize(w, _uzytkownik);
        }

        void Conn_StateChange(object sender, StateChangeEventArgs e)
        {
            try
            {
                switch (e.CurrentState)
                {
                    case ConnectionState.Open:
                        lbStatus.Image = ikonyStatusuPolaczenia.Images[0];
                        lbStatus.Text = "Połączony";
                        break;
                    case ConnectionState.Closed:
                        lbStatus.Image = ikonyStatusuPolaczenia.Images[1];
                        lbStatus.Text = "Rozłączony";
                        break;
                }
            }
            catch { }
        }

        private void zakończToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        //kliknięcie połącz z main menu
        private void polaczToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            _polaczenie.Polacz(_uzytkownik);
            konsultantID = _polaczenie.PobierzIdKonsultanta(_uzytkownik.UserID);
        }
        //kliknięcie rozłącz z main menu
        private void rozlaczToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            _polaczenie.Rozlacz();
        }
        //wywołanie okna logowania
        private void uzytkownikToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (oknoLogowania == null)
                oknoLogowania = new LoginForm();
            oknoLogowania.User = _uzytkownik.UserID;
            oknoLogowania.Password = _uzytkownik.Password;

            if (oknoLogowania.ShowDialog() == DialogResult.OK)
            {
                _uzytkownik.UserID = oknoLogowania.User;
                _uzytkownik.Password = oknoLogowania.Password;
            }
        }

        //kliknięcie szukaj w wyszukiwarce wycieczek
        private void btSzukajWycieczki_Click(object sender, EventArgs e)
        {
            uruchomWyszukiwarkeWycieczek();
        }

        void uruchomWyszukiwarkeWycieczek()
        {
            if (wyszukiwarkaWycieczek == null)
            {
                wyszukiwarkaWycieczek = new SearchTripForm();
                wyszukiwarkaWycieczek.PobierzZapytanie += new SearchTripForm.WysylaczEventHandler(wyszukiwarkaWycieczek_PobierzZapytanie);
            }
            //kraje do comboboxa
            wyszukiwarkaWycieczek.Kraje = _polaczenie.PobierzKrajeZPustymPolem();
            wyszukiwarkaWycieczek.Promocje = _polaczenie.PobierzPromocje();

            if (wyszukiwarkaWycieczek.ShowDialog() == DialogResult.OK)
            {
                if (wyszukiwarkaWycieczek.Id != -1)
                {
                    aktualnaWycieczka = new wycieczka(wyszukiwarkaWycieczek.Id, wyszukiwarkaWycieczek.Nazwa, wyszukiwarkaWycieczek.Cena);
                    gpWycieczka.Visible = true;
                    lbNazwaWycieczki.Text = aktualnaWycieczka.Nazwa;
                }
            }
        }
        //wypełnianie wyniku wyszukiwania w wyszukiwarce wycieczek
        void wyszukiwarkaWycieczek_PobierzZapytanie(object sender, SearchTripForm.WysylaczEventArgs e)
        {
            wyszukiwarkaWycieczek.WynikWyszukiwania = _polaczenie.ZwrocTabele(e.Zapytanie);
        }

        private void btSzukajKlienta_Click(object sender, EventArgs e)
        {
            uruchomWyszukiwarkeKlientow();
        }

        //wypełnianie wyniku wyszukiwania w wyszukiwarce klientów
        void wyszukiwarkaKlientow_PobierzZapytanie(object sender, SearchClientForm.WysylaczZapytaniaEventArgs e)
        {
            wyszukiwarkaKlientow.WynikWyszukiwania = _polaczenie.ZwrocTabele(e.Zapytanie);
        }
        
        //uruchamia wyszukiwarke klientów
        void uruchomWyszukiwarkeKlientow()
        {
            if (wyszukiwarkaKlientow == null)
            {
                wyszukiwarkaKlientow = new SearchClientForm();
                wyszukiwarkaKlientow.PobierzZapytanie += new SearchClientForm.WysylaczEventHandler(wyszukiwarkaKlientow_PobierzZapytanie);
                wyszukiwarkaKlientow.PobierzId += new SearchClientForm.WysylaczIdEventHandler(wyszukiwarkaKlientow_PobierzId);
                wyszukiwarkaKlientow.DodajKlienta += new TworzenieKlienta(wyszukiwarkaKlientow_DodajKlienta);
            }

            if (wyszukiwarkaKlientow.ShowDialog() == DialogResult.OK)
            {
                if (wyszukiwarkaKlientow.WybranyKlientId == -1)
                {
                    gbKlient.Visible = false;
                    AktualnyKlient = null;
                    edytujToolStripMenuItem.Enabled = false;
                }
                else
                {
                    gbKlient.Visible = true;
                    lbImie.Text = wyszukiwarkaKlientow.WybranyKlientImie;
                    lbNazwisko.Text = wyszukiwarkaKlientow.WybranyKlientNazwisko;
                    AktualnyKlient = new klient(wyszukiwarkaKlientow.WybranyKlientId, wyszukiwarkaKlientow.WybranyKlientImie, wyszukiwarkaKlientow.WybranyKlientNazwisko);
                    edytujToolStripMenuItem.Enabled = true;
                }
            }
            else
            {
                gbKlient.Visible = false;
                AktualnyKlient = null;
                edytujToolStripMenuItem.Enabled = false;
            }
        }

        void wyszukiwarkaKlientow_PobierzId(object sender, SearchClientForm.WysylaczIdEventArgs e)
        {
            uruchomEdycjeKlienta(e.Id);
        }

        void wyszukiwarkaKlientow_DodajKlienta()
        {
            uruchomDodawanieKlienta();
            wyszukiwarkaKlientow.WynikWyszukiwania = _polaczenie.ZwrocTabele(wyszukiwarkaKlientow.Zapytanie);
        }
        //dodajemy klienta
        void uruchomDodawanieKlienta()
        {
            if (edytorKlientow == null)
            {
                edytorKlientow = new AddEditUserForm();
                edytorKlientow.DodanyKlient += new AddEditUserForm.DodawanieKlienta(edytorKlientow_DodanyKlient);
                edytorKlientow.ZedytowanyKlient += new AddEditUserForm.EdytowanieKlienta(edytorKlientow_ZedytowanyKlient);
            }
            edytorKlientow.ZresetujPola();
            edytorKlientow.TextNaPrzycisku = "Dodaj";

            if (edytorKlientow.ShowDialog() == DialogResult.OK)
            {
                int tmp = 0;
                if (!(_polaczenie.SprawdzCzyKlientIstnieje(edytorKlientow.Pesel)))
                    tmp = _polaczenie.DodajKlienta(edytorKlientow.Imie, edytorKlientow.Nazwisko, edytorKlientow.Miejscowosc, edytorKlientow.Kod, edytorKlientow.Pesel, edytorKlientow.Telefon, edytorKlientow.Email,edytorKlientow.Ulica);
                if (tmp == 1)
                    MessageBox.Show("Pomyślnie dodano nowego klienta");
            }
        }

        void edytorKlientow_DodanyKlient()
        {
            edytorKlientow.DialogResult = DialogResult.OK;
        }

        void uruchomEdycjeKlienta(int id)
        {
            if (edytorKlientow == null)
            {
                edytorKlientow = new AddEditUserForm();
                edytorKlientow.ZedytowanyKlient += new AddEditUserForm.EdytowanieKlienta(edytorKlientow_ZedytowanyKlient);
            }
            ArrayList listaKlienta = new ArrayList();
            edytorKlientow.TextNaPrzycisku = "Zmień";
            edytorKlientow.ZresetujPola();
            listaKlienta = _polaczenie.PobierzKlienta(id);
            edytorKlientow.Imie = listaKlienta[0].ToString();
            edytorKlientow.Nazwisko = listaKlienta[1].ToString();
            edytorKlientow.Miejscowosc = listaKlienta[2].ToString();
            edytorKlientow.Kod = listaKlienta[3].ToString();
            edytorKlientow.Pesel2 = listaKlienta[4].ToString();
            edytorKlientow.Telefon = listaKlienta[5].ToString();
            edytorKlientow.Email = listaKlienta[6].ToString();
            edytorKlientow.Ulica = listaKlienta[7].ToString();
            if (edytorKlientow.ShowDialog() == DialogResult.OK)
            {
                int tmp = 0;
                tmp = _polaczenie.EdytujKlienta(id, edytorKlientow.Imie, edytorKlientow.Nazwisko, edytorKlientow.Miejscowosc, edytorKlientow.Kod, edytorKlientow.Pesel, edytorKlientow.Telefon, edytorKlientow.Email,edytorKlientow.Ulica);
                if (AktualnyKlient != null && tmp ==1)
                {
                    AktualnyKlient = new klient(id, edytorKlientow.Imie, edytorKlientow.Nazwisko);
                    lbImie.Text = AktualnyKlient.Imie;
                    lbNazwisko.Text = AktualnyKlient.Nazwisko;
                }

            }
        }

        void edytorKlientow_ZedytowanyKlient()
        {
            edytorKlientow.DialogResult = DialogResult.OK;
        }

        private void label1_Click(object sender, EventArgs e)
        {
            AktualnyKlient = null;
            gbKlient.Visible = false;
            edytujToolStripMenuItem.Enabled = false;
        }

        private void lbCancelWycieczka_Click(object sender, EventArgs e)
        {
            gpWycieczka.Visible = false;
            aktualnaWycieczka = null;
            edytujToolStripMenuItem1.Enabled = false;
        }

        private void label1_Click_1(object sender, EventArgs e)
        {
            uruchomWyszukiwarkeKlientow();
        }

        private void wyszukajKlientaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            uruchomWyszukiwarkeKlientow();
        }

        private void dodajToolStripMenuItem_Click(object sender, EventArgs e)
        {
            uruchomDodawanieKlienta();
        }

        private void edytujToolStripMenuItem_Click(object sender, EventArgs e)
        {
            uruchomEdycjeKlienta(AktualnyKlient.Id);
        }

        private void lbTripChange_Click(object sender, EventArgs e)
        {
            uruchomWyszukiwarkeWycieczek();
        }        //kliknięcie etykiety zmieniającej wycieczke

        private void wyszukajToolStripMenuItem_Click(object sender, EventArgs e)
        {
            uruchomWyszukiwarkeWycieczek();
        }//uruchamianie wyszukiwarki wycieczek z poziomu menu

        private void btRezerwacja_Click(object sender, EventArgs e)
        {
            if (aktualnaWycieczka == null)
            {
                if (AktualnyKlient == null)
                {
                    MessageBox.Show("Przed złożeniem rezerwacji proszę wybrać wycieczkę i klienta");
                }
                else
                {
                    MessageBox.Show("Przed złożeniem rezerwacji proszę wybrać wycieczkę");
                }
            }
            else if (AktualnyKlient == null)
            {
                MessageBox.Show("Przed złożeniem rezerwacji proszę wybrać klienta");
            }
            else
            {
                edytorZamowien = new AddEditOrder();

                edytorZamowien.KlientImie = AktualnyKlient.Imie;
                edytorZamowien.KlientNazwisko = AktualnyKlient.Nazwisko;
                edytorZamowien.Wycieczka = aktualnaWycieczka.Nazwa;
                edytorZamowien.MaxIloscMiejsc = _polaczenie.LiczbaWolnychMiejsc(aktualnaWycieczka.Id);
                edytorZamowien.CenaZaMiejsce = _polaczenie.CenaZaMiejsce(aktualnaWycieczka.Id);
                edytorZamowien.UslugiDodatkowe = _polaczenie.ZwrocTabele(String.Format("SELECT u.id id, u.nazwa, cena FROM usluga u, wycieczki_uslugi w WHERE u.id = w.id AND w.id = {0}", aktualnaWycieczka.Id));
                edytorZamowien.Wyzywienie = _polaczenie.ZwrocTabele(String.Format("select wz.id id, wz.nazwa nazwa, wz.cena * (data_powrotu - data_wyjazdu) cena from wyzywienie wz, wycieczka wc, hotel h where wz.hot_id = h.id AND h.id = wc.hot_id and wc.id = {0}",aktualnaWycieczka.Id));

                if (edytorZamowien.ShowDialog() == DialogResult.OK)
                {
                    _polaczenie.DodajRezerwacje(aktualnaWycieczka.Id, konsultantID, AktualnyKlient.Id, edytorZamowien.WyzywienieID, (int)edytorZamowien.IloscMiejsc, edytorZamowien.CenaZaMiejsce, edytorZamowien.WybraneUslugi);
                }
            }
        }
        //uruchamia dodawanie wycieczki
        private void UruchomDodawanieWycieczek()
        {
            if (edytorWycieczek == null)
            {
                edytorWycieczek = new AddEditTrip();
                edytorWycieczek.DodajHotel += new DodawanieHotelu(edytorWycieczek_DodajHotel);
                edytorWycieczek.DodajPromocje += new DodawaniePromocji(edytorWycieczek_DodajPromocje);
                edytorWycieczek.DodajTyp +=new DodawanieTypu(UruchomDodawanieTypu);
                edytorWycieczek.DodajUsluge +=new DodawanieUslugi(UruchomDodawanieUslugi);
            }
            edytorWycieczek.Hotele = _polaczenie.PobierzHotele();
            edytorWycieczek.Promocje = _polaczenie.PobierzPromocje();
            edytorWycieczek.Typy = _polaczenie.PobierzTypy();
            edytorWycieczek.UslugiDodatkowe = _polaczenie.ZwrocTabele("SELECT id, nazwa, cena FROM usluga");
            if (edytorWycieczek.ShowDialog() == DialogResult.OK)
            {
                _polaczenie.DodajWycieczke(edytorWycieczek.WybranyHotel, edytorWycieczek.WybranyTyp, edytorWycieczek.WybranaPromocja, edytorWycieczek.IloscMiejsc, edytorWycieczek.Nazwa, edytorWycieczek.DataRozpoczecia, edytorWycieczek.DataZakonczenia, edytorWycieczek.Cena, edytorWycieczek.Opis, edytorWycieczek.WybraneUslugi);
            }
        }

        void edytorWycieczek_DodajPromocje()
        {
            UruchomDodawaniePromocji();
        }
        //event dodajhotel w formie dodawania wycieczki
        void edytorWycieczek_DodajHotel()
        {
            UruchomDodawanieHotelu();
        }
        //uruchamianie formy -> dodawanie hotelu
        void UruchomDodawanieHotelu()
        {
            if (edytorHotelu == null)
            {
                edytorHotelu = new AddEditHotel();
                edytorHotelu.DodajKurort += new DodawanieKurortu(edytorHotelu_DodajKurort);
                edytorHotelu.DodajTransport +=new DodawanieTransportu(edytorHotelu_DodajTransport);
            }
            edytorHotelu.Kurorty = _polaczenie.PobierzKurorty();
            edytorHotelu.Transporty = _polaczenie.PobierzTransport();

            if (edytorHotelu.ShowDialog() == DialogResult.OK)
            {
                _polaczenie.DodajHotel(edytorHotelu.TransportID, edytorHotelu.KurortID, edytorHotelu.Nazwa, edytorHotelu.Miejscowsc, edytorHotelu.Standard, edytorHotelu.Opis, edytorHotelu.Wyzywienie);

                if (edytorWycieczek != null)
                    edytorWycieczek.Hotele = _polaczenie.PobierzHotele();
            }
        }

        void edytorHotelu_DodajTransport()
        {
            UruchomEdytorTransportu();
        }

        void edytorHotelu_DodajKurort()
        {
            UruchomEdytorKurortu();
        }
        void UruchomEdytorTransportu()
        {
            if (edytorTransportu == null)
            {
                edytorTransportu = new AddEditTransport();
            }
            if (edytorTransportu.ShowDialog() == DialogResult.OK)
            {
                _polaczenie.DodajTransport(edytorTransportu.Nazwa, edytorTransportu.Przewoznik, edytorTransportu.Opis);
                if (edytorHotelu != null)
                    edytorHotelu.Transporty = _polaczenie.PobierzTransport();
            }
        }
        void UruchomEdytorKraju()
        {
            if (edytorKraju == null)
            {
                edytorKraju = new AddEditKraj();
            }
            if (edytorKraju.ShowDialog() == DialogResult.OK)
            {
                _polaczenie.DodajKraj(edytorKraju.Nazwa, edytorKraju.Kontynent, edytorKraju.Waluta, edytorKraju.Opis);
                if (edytorKurortu != null)
                    edytorKurortu.Kraje = _polaczenie.PobierzKraje();
            }
        }
        void UruchomEdytorKurortu()
        {
            if (edytorKurortu == null)
            {
                edytorKurortu = new AddEditKurort();
                edytorKurortu.DodajKraj += new DodawanieKraju(edytorKurortu_DodajKraj);
            }
            edytorKurortu.Kraje = _polaczenie.PobierzKraje();

            if (edytorKurortu.ShowDialog() == DialogResult.OK)
            {
                _polaczenie.DodajKurort(edytorKurortu.Nazwa, edytorKurortu.Opis, edytorKurortu.WybranyKraj);
                if (edytorHotelu != null)
                    edytorHotelu.Kurorty = _polaczenie.PobierzKurorty();
            }
        }

        void edytorKurortu_DodajKraj()
        {
            UruchomEdytorKraju();
        }
        void UruchomDodawaniePromocji()
        {
            if (edytorPromocji == null)
            {
                edytorPromocji = new AddEditPromotion();
            }
            if (edytorPromocji.ShowDialog() == DialogResult.OK)
            {
                _polaczenie.DodajPromocje(edytorPromocji.Nazwa, (int)edytorPromocji.Wartosc, edytorPromocji.Opis);
                if (edytorWycieczek != null)
                    edytorWycieczek.Promocje = _polaczenie.PobierzPromocje();
            }
        }
        void UruchomDodawanieUslugi()
        {
            if (edytorUslug == null)
            {
                edytorUslug = new AddEditService();
            }
            if (edytorUslug.ShowDialog() == DialogResult.OK)
            {
                _polaczenie.DodajUsluge(edytorUslug.Nazwa, edytorUslug.Cena, edytorUslug.Opis);
                if(edytorWycieczek != null)
                    edytorWycieczek.UslugiDodatkowe = _polaczenie.ZwrocTabele("SELECT id, u.nazwa, cena FROM usluga u");
            }
        }
        void UruchomDodawanieTypu()
        {
            if (edytorTypu == null)
            {
                edytorTypu = new AddEditType();
            }
            if (edytorTypu.ShowDialog() == DialogResult.OK)
            {
                _polaczenie.DodajTyp(edytorTypu.Nazwa, edytorTypu.Opis);
                if (edytorWycieczek != null)
                    edytorWycieczek.Typy = _polaczenie.PobierzTypy();
            }
        }
        void UruchomEdytorRezerwacji()
        {
            if (edytorRezerwacji == null)
            {
                edytorRezerwacji = new AddEditReservation();
                edytorRezerwacji.PobierzRezerwacje += new PobieranieRezerwacji(edytorRezerwacji_PobierzRezerwacje);
                edytorRezerwacji.UsunRezerwacje += new UsuwanieRezerwacji(edytorRezerwacji_UsunRezerwacje);
                edytorRezerwacji.PobierzUslugi += new AddEditReservation.WysylaczEventHandler(edytorRezerwacji_PobierzUslugi);
            }
            if (edytorRezerwacji.ShowDialog() == DialogResult.OK)
            {

            }
        }

        void edytorRezerwacji_PobierzUslugi(object sender, AddEditReservation.WysylaczEventArgs e)
        {
            edytorRezerwacji.Uslugi = _polaczenie.PobierzUslugi(e.Id);
        }
        void UruchomEdytorStatystyk()
        {
            if (edytorStatystyk == null)
            {
                edytorStatystyk = new Wykresy();
            }
            edytorStatystyk.daneKraj = _polaczenie.ZwrocTabele("SELECT * FROM statystyki_kraj");
            edytorStatystyk.daneKurort = _polaczenie.ZwrocTabele("SELECT * FROM statystyki_kurort");
            edytorStatystyk.ShowDialog();

        }

        void edytorRezerwacji_UsunRezerwacje()
        {
            _polaczenie.UsunRezerwacje(edytorRezerwacji.WybraneID);
            edytorRezerwacji.WynikWyszukiwania = _polaczenie.ZwrocTabele(edytorRezerwacji.Zapytanie);
        }

        void edytorRezerwacji_PobierzRezerwacje()
        {
            edytorRezerwacji.WynikWyszukiwania = _polaczenie.ZwrocTabele(edytorRezerwacji.Zapytanie);
        }
        //wybranie w menu wycieczka -> dodaj
        private void dodajToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            UruchomDodawanieWycieczek();
        }

        private void gbKlient_Enter(object sender, EventArgs e)
        {

        }

        private void gpWycieczka_Enter(object sender, EventArgs e)
        {

        }

        private void dodajToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            UruchomDodawanieHotelu();
        }

        private void dodajToolStripMenuItem3_Click(object sender, EventArgs e)
        {
            UruchomEdytorKraju();
        }

        private void dodajToolStripMenuItem4_Click(object sender, EventArgs e)
        {
            UruchomEdytorKurortu();
        }

        private void dodajUslugeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            UruchomDodawanieUslugi();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            UruchomEdytorRezerwacji();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            UruchomEdytorStatystyk();
        }

        private void GlowneOkno_Paint(object sender, PaintEventArgs e)
        {
            System.Drawing.Drawing2D.LinearGradientBrush basebackground;
            basebackground = new System.Drawing.Drawing2D.LinearGradientBrush(new Point(0, 0), new Point(0, ClientSize.Height), Color.White, Color.LightGray);
            e.Graphics.FillRectangle(basebackground, ClientRectangle);
        }
    }
}
